<?php
/**
 * Representa��o de uma Categoria.
 */
require_once('NaturezaDespesaDAO.php');


class NaturezaDespesa
{
      private $id;             // Chave-prim�ria da NaturezaDespesa cadastrada no banco de dados.
      private $descricao;           // descricao da NaturezaDespesa
      private $dao;            // Objeto para acesso ao banco de dados
      
      public function __set( $var, $val )
      {
             $this->$var = $val;
      }

      public function __get( $var )
      {
             return $this->$var;
      }
      
      public function __construct( $id = NULL, $descricao = NULL )
      {
             $this->id = $id;
             $this->descricao = $descricao;
             $this->dao = new NaturezaDespesaDAO();
      }
      
      /**
      Insere um registro na tabela t_NaturezaDespesa.
      @return - Retorna TRUE caso a opera��o seja efetuada com sucesso ou FALSE caso contr�rio.
      */
      public function CadastrarNaturezaDespesa()
      {
             $resultado = $this->dao->Salvar( $this );
             return $resultado;
      }

	   /**
	 	* Carrega da tabela t_categoria no banco de dados o registro referente a chave-prim�ria $id.
	 	* Transforma o registro retornado do banco de dados em um objeto Categoria com essas informa��es.
	 	* @param $id - Chave-prim�ria no banco de dados da categoria.
	 	* @return - Retorna um objeto do tipo Categoria caso a opera��o seja efetuada com sucesso, caso contr�rio retorna FALSE.
	 	*/
      public function CarregarNaturezaDespesa( $id )
      {
             $resultado = $this->dao->CarregarNaturezaDespesa( $id );
             return $resultado;
      }
      
      /**
      Busca por todos os registros inseridos na tabela t_categoria.
      Para cada registro encontrado ser� criada uma inst�ncia de Categoria com os valores das colunas do registro em quest�o.
      Por fim, caso sejam encontrados registros, todas as inst�ncias criadas ser�o inseridas dentro de um array que ser� retornado por este m�todo.
      Caso contr�rio, ser� retornado FALSE indicando que n�o foi encontrado nenhum registro.
      @return - Retorna um array de objetos do tipo Categoria. Caso n�o encontre nenhum registro retorna FALSE.
      */
      public function CarregarNaturezaDespesas()
      {
             $resultado = $this->dao->ListarNaturezaDespesas();
             return $resultado;
      }

      /**
	 	* Altera o registro no banco de dados na tabela t_NaturezaDespesa associado ao objeto.
	 	* @return - Retorna TRUE caso a opera��o seja efetuada com sucesso ou FALSE caso contr�rio. 
		*/
      public function AlterarNaturezaDespesa( )
      {
             $resultado = $this->dao->Alterar( $this );
             return $resultado;
      }
      
      /**
	 	* Exclui um registro no banco de dados da tabela t_NaturezaDespesa.
	 	* @param $id - Chave-prim�ria no banco de dados do NaturezaDespesa.
	 	* @return - Retorna TRUE caso a opera��o seja efetuada com sucesso ou FALSE caso contr�rio. 
		*/
      public function RemoverNaturezaDespesa( $id )
      {
             $resultado = $this->dao->Deletar( $id );
             return $resultado;
      }
      
      /**
	 * Transforma um array de objetos NaturezaDespesa em uma string no formato XML contendo as informa��es dos servi�os.
	 * @param $array - Array de objetos do tipo NaturezaDespesa.
	 * @return Retorna uma string no formato XML contendo as informa��es das NaturezaDespesas.
	 */
      static public function ArrayParaXML( $array )
      {
      		$xml = "<naturezadespesas>\n";
      		
      		if( is_array($array))
      		{
      			for( $i = 0; $i < count( $array ); $i++ )
				{
					$xml .= "<naturezadespesa>\n";
                   	$xml .= "<id>".$array[$i]->id."</id>\n";
                   	$xml .= "<descricao>".$array[$i]->descricao."</descricao>\n";
                   	$xml .= "</naturezadespesa>\n";
				}
      		}
      		else if( is_a( $array, 'NaturezaDespesa' ) )
      		{
      			$xml .= "<naturezadespesa>\n";
				$xml .= "<id>".$array->id."</id>\n";
				$xml .= "<descricao>".$array->descricao."</descricao>\n";
				$xml .= "</naturezadespesa>\n";
      		}
      		else
      			return FALSE;
      			
      		$xml .= "</naturezadespesas>\n";
      		return $xml;
      }

}
?>
